(CHAR_VARIATION_SELECTOR_P): New macro.
authorKenichi Handa <handa@m17n.org>
Tue, 30 Dec 2008 23:42:15 +0000 (23:42 +0000)
committerKenichi Handa <handa@m17n.org>
Tue, 30 Dec 2008 23:42:15 +0000 (23:42 +0000)
(CHAR_SURROGATE_PAIR_P): New macro.

src/character.h

index 34e696e5083476acce1fb4eea34b672f75fc38c3..a766b767eb369b688041ecba62e581229f856556 100644 (file)
@@ -610,6 +610,26 @@ extern char unibyte_has_multibyte_table[256];
    ? ASCII_CHAR_WIDTH (c)      \
    : XINT (CHAR_TABLE_REF (Vchar_width_table, c)))
 
+/* If C is a variation selector, return the index numnber of the
+   variation selector (1..256).  Otherwise, return 0.  */
+
+#define CHAR_VARIATION_SELECTOR_P(c)           \
+  ((c) < 0xFE00 ? 0                            \
+   : (c) <= 0xFE0F ? (c) - 0xFE00 + 1          \
+   : (c) < 0xE0100 ? 0                         \
+   : (c) <= 0xE01EF ? (c) - 0xE0100 + 17       \
+   : 0)
+
+/* If C is a high surrogate, return 1.  If C is a low surrogate,
+   return 0. Otherwise, return 0.  */
+
+#define CHAR_SURROGATE_PAIR_P(c)       \
+  ((c) < 0xD800 ? 0                    \
+   : (c) <= 0xDBFF ? 1                 \
+   : (c) <= 0xDFFF ? 2                 \
+   : 0)
+
+
 extern int char_resolve_modifier_mask P_ ((int));
 extern int char_string P_ ((unsigned, unsigned char *));
 extern int string_char P_ ((const unsigned char *,